package leetcode.code0795;

import leetcode.helper.MaxDebug;

public class Solution1 extends Solution795 {

	@Override
	public int numSubarrayBoundedMax(int[] nums, int left, int right) {
		int Len = nums.length;
		int L = 0;
		int R = 0;
		int ans = 0;
		while (R <= Len) {//
			while (R < Len && nums[R] <= right) {// 找右端点并且计数>=大于left的数量
				R++;
			}
			L = R - 1;
			int last = 0;
			while (L >= 0 && nums[L] <= right) {// 向R靠近的过程，如果仍有>=left的数可以继续累加子数组
				int num = nums[L];
				if (num >= left) {
					last = R - L;
					ans += last;// 包括当前点
				} else {
					ans += last;// 不包括当前点
				}
				L--;
			}
			R++;
		}
		return ans;
	}

	public static void main(String[] args) {
		Solution1 so = new Solution1();
		MaxDebug.debug14(so);

	}

}
